A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to the software and data as described below and in the drawing hereto: Copyright(copyright) 1998, Microsoft Corporation, All Rights Reserved.
This invention relates generally to software development environments, and more particularly to automatically providing help information.
Over time computer programs and the software programming languages used to develop them have become more complex. Computer programs are typically composed of many different source code files and programming libraries. These libraries include system libraries, networking libraries and utility libraries comprising many different functions or methods. In addition, object oriented languages have implemented a concept referred to as function overloading. Function overloading occurs when multiple functions (or methods) within a class hierarchy share the same name (or identifier), but have differing numbers of parameters or differing parameter types. Because of the proliferation of libraries and classes, the number of functions available to a software developer has steadily risen. This makes it very difficult if not impossible for a software developer to remember the calling sequence for a particular function.
In addition to function definitions, classes in object oriented languages typically have member attributes such as functions and properties. These attributes are used to define varying aspects of the class. Often the source code defining these attributes has comments associated with the attributes indicating how they are used. The number of these attributes in any single class can grow quite large, and combined with the fact that attributes can be inherited from parent classes can make it difficult for a software developer to remember the purpose and use for a particular attribute.
A further factor complicating the software development effort is the fact that it is often the case that a software module will define a large number of identifiers. These identifiers comprise typedefs, variables, macros, parameters, namespaces, templates, attributes, etc. and must each have a type, declaration and/or definition specified. It is often difficult for a developer to remember the type and identifier for these entities. In addition this information is context dependent.
One manner by which compilers and interpreters have become somewhat easier to use is through the use of the Integrated Development Environment (IDE). These environments typically support some kind of on-line help mechanism allowing a developer to refer to on-line documentation describing varying function definitions, thereby providing an improvement over printed manuals and text searching across multiple source files. Also, these environments typically have browsers capable of opening multiple source files, allowing a developer to refer to the source file defining a particular function or class attribute while editing another source file. In addition, for object oriented languages, the IDE may also provide a browser allowing the developer access to the class hierarchy enabling a developer to browse a class definition. While on-line help and browsers are an improvement to printed manuals and text searching, several problems remain. First, in order to look up the definition of a function or member attribute, the developer must locate the source file containing the function or attribute definition, consult the on-line help file, or locate the class name in the class hierarchy browser.
Second, the user must locate the function or attribute definition in the file, which typically involves either scrolling through the file, using a text search capability to search through the file, or using the browser to locate the function or attribute definition in the file. Finally, once the function or attribute definition has been located, the user must typically alternate back and forth between the window containing the definition of the function or attribute (either in a file window or a class hierarchy window) and the window containing the source code currently being edited.
The above-identified problems, shortcomings and disadvantages with the prior art, as well as other problems, shortcoming and disadvantages, are solved by the present invention, which will be understood by reading and studying the specification and the drawings. In one embodiment, the system includes an editor to provide for developing source code for a computer program. The source code includes statements containing identifiers. In addition, the editor, upon detecting an event from a pre-determined set of events, invokes an automatic help module. The automatic help module displays reference information associated with the identifier.
Thus one aspect of the invention is that while a programmer is developing or writing source code for a program, the automatic help module is invoked upon the occurrence of a predetermined event. The event can be the positioning of a cursor over an identifier followed by a clicking a mouse button, hovering the mouse cursor over an identifier, selecting a menu or icon after highlighting the identifier, or the event can be the entry of identifier into the source code. The automatic help module then displays reference information regarding the identifier. In one embodiment of the invention, the reference information is a list of parameters for the function with the associated data type for each parameter. The first required parameter in the displayed list is highlighted. As the developer enters further function parameters (if any) in the source code, the next required parameter is highlighted. In addition, in one embodiment of the invention, as the user provides more data, the list of overloaded functions and their associated parameter sets can be pruned to remove those items that are incompatible with what the user has already entered.
In a further alternative embodiment, the source code is searched for comments associated with an identifier. If any comments are found, the comments are displayed, thereby providing potentially useful information to the developer. Thus embodiments of the invention have advantages not found in prior systems. The developer is able to view relevant reference information regarding functions and attributes without having to consult on-line help directories, source code files containing identifier definitions, paper documentation, or other potential sources of identifier information. This saves the developer time and does not interrupt the developer""s train of thought. In this manner, development of computer programs is made easier and more productive as compared to previous systems. The invention includes systems, methods, computers, and computer-readable media of varying scope. Besides the embodiments, advantages and aspects of the invention described here, the invention also includes other embodiments, advantages and aspects, as will become apparent by reading and studying the drawings and the following description. In an alternative embodiment of the invention, the reference information is the data type of the identifier.